package com.juqimiao.di.demos.d01.services.impl;

import com.juqimiao.di.demos.d01.daos.CustomerDao;
import com.juqimiao.di.demos.d01.services.CustomerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 演示如何使用 {@link Component}标注一个对象为bean对象。
 * @author collin
 * @date 2020/2/18
 */
@Component
public class CustomerServiceImpl
        implements CustomerService {

    /**
     * 演示如何使用{@link Autowired}为字段装配一个bean对象。
     * 字段装配的方式并不能保证不是不为null。
     */
    @Autowired
    private CustomerDao customerDao;

    /**
     * 获取单个客户信息。
     * @param id 客户Id。
     * @return 客户信息。
     * @throws Exception 通用系统错误。
     */
    @Override
    public String getInfo(String id) throws Exception {
        //通过字段装配的方式，customerDao有可能为null。
        if (customerDao != null) {
            return customerDao.selectById(id);
        }

        throw new Exception("CustomerDao 初始化失败。");
    }
}
